function ajax(options){
    let {url="",method="get",async=true,dataType="text",data={},success=function(){}} = options ;
    // 申明一个变量解析ajax的配置项
    // url为ajax请求地址默认为空
    // method为ajax请求方式，get和post方式，默认为get
    // async为ajax请求的同步与异步，true为异步操作，false为同步操作，默认为true
    // dataType为请求ajax时发送的数据类型，接收和发送ajax数据类型保持一致
    // data为请求ajax的发送的数据集
    // success方法为请求ajax成功时，执行的方法，可以将请求成功的数据当作实参传回我们需要用到ajax请求的地方执行
    let xhr ;                      // 申明一个变量
    if(window.XMLHttpRequest){          //当存在  XMLHttpRequest  方法时  创建ajax请求
        xhr = new XMLHttpRequest();
    } else {                            //不兼容   XMLHttpRequest   方法时      
        xhr = new ActiveXObject();      //创建ie模式下的ajax请求
    }
    if ( method.toLowerCase() == "get" ){       //如果配置项中的传输方式为get
        url = url + "?" + getSearch(data);      //那么就给文件路径  url  拼接search
    }
    
    xhr.open(method,url,async);                 //打开ajax

    if( method.toLowerCase() == "post" ){       //如果传输方式为post
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");  //设置post传输的头部
    }           
                                   
    if( method.toLowerCase() == "post" ){       //如果传输方式为post传输
        xhr.send(getSearch(data));              //发送ajax时并传递数据
    } else {
        xhr.send();                             //如果不是post传输方式，只需要send即可
    }

    xhr.onload = function (){               
        // dataType数据集的类型，保证发送数据集合返还数据集保持一致性
        if( dataType.toLowerCase() == "json" ){     //当传进来的数据集的类型是json格式时
            success(JSON.parse(xhr.responseText));  //传递出去的数据集也是json格式
        } else {
            success(xhr.responseText);              //否者默认格式
        }
    }
}
// 将数据集进行拼接操作
function getSearch(obj){
    str = '' ;
    for( let key in obj ){
        str = str+key+"="+obj[key]+"&";
    }
    str = str.substr(0,str.length-1);
    return str ; 
}